作者:biosan | 来源:互联网 | 2023-10-17 16:47
运算符号:^异或首先将参与运算的数字表达为二进制(这里采用8位):2:000000103:00000011上下对齐,逐位进行运算,法则是:1异或10;0异或00;1异或01;0异或
运算符号:
^ 异或
首先将参与运算的数字表达为二进制(这里采用8位):
2:00000010
3:00000011
上下对齐,逐位进行运算,法则是:
1异或1=0;0异或0=0;1异或0=1;0异或1=1
那么2和3的计算结果如下:
00000010 (2)
00000011 (3)
------------------
00000001 (1)
所以2^3 = 1
<<左移 将操作数按位左移高位被丢弃低位顺序补0
例:10001010 <<4 也就是左移4位 结果为10100000
注意:对于有符号的数,左移会丢弃符号位,或者符号位会被更改。
<<右移 将操作数按位右移低位被丢弃,如果是正数高位顺序补0,如果是负数高位顺序补1
例:10001010 >>4 也就是右移4位 结果为11111000
注意:对于有符号的数(int,double)等,右移时,最高位的符号位应该不变,如果以前是正数,符号位是0,那么右移后还应该是0,其他位补0,
如果以前是负数,符号位是1,那么右移后,符号位还应该是1,其他数补1(因为负数存的补码).对于无符号的数(uint,ushort)等,那不需要关心符号位。
~是一个一元运算符,他把操作的数的位取反!
比如:
操作数的位 ~的结果位
1 0
0 1
书上是这么说的!
但是我刚才测试了下:
发现它的默认值是-2
所以 int i = 10;
Response.Write(i+~1);
页面上显示8